package com.haolp.sys.dao;

import com.haolp.sys.common.vo.Node;
import com.haolp.sys.pojo.SysMenu;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.mybatis.spring.annotation.MapperScans;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.List;
import java.util.Map;

/**
 * @author 小李
 * @version 1.0
 * @date 2021/10/8 10:08
 */

/**
 * 菜单数据层对象
 */
public interface SysMenuDao {
    /**
     * 获取多个菜单id对应的权限标识
     * @param menuIds
     * @return
     */
    List<String> findPermisssions(@Param("menuIds") Integer[] menuIds);

    /**
     * 将内存中idmenu对象持久化到数据库
     * @param sysMenu 菜单对象，其内容来自页面
     * @return
     */
    int insertObject(SysMenu sysMenu);
    /**
     * 查询菜单的节点信息
     */
    @Select("select id,name,parentId from sys_menus")
    List<Node> findZtreeMenuNodes();
    List<Map<String,Object>> findObjects();

    /**
     * 统计菜单是否有子菜单
     * @param id
     * @return 统计的子菜单的个数
     * 当统计出来的子菜单个数大于1或大于0，说明有子菜单
     */
    @Select("select count(*) from sys_menus where parentId=#{id}")
    int getChildCount(Integer id);

    /**
     * 基于id删除菜单自身信息
     * @param id
     * @return 删除的行数
     */
    @Delete("delete from sys_menus where id=#{id}")
    int deleteObject(Integer id);

    /**
     * 将内存中的new对象更新到数据库
     * @param sysMenu
     * @return
     */
    int updateObject(SysMenu sysMenu);



}
